<template>
	<view>
		<button type="primary" @click="enableBackgroundLocation()">开启后台</button>
		<button type="primary" @click="disableBackgroundLocation()">停止后台</button>
		<button type="primary" @click="startLocation()">开启定位</button>
		<button type="primary" @click="stopLocation()">停止定位</button>
	</view>
</template>

<script>
	//持续定位插件对象
	var loc = uni.requireNativePlugin('AMap-Loc');
	//监听全局事件
	var globalEvent = uni.requireNativePlugin('globalEvent');
	export default {
		data() {
			return {
				pathPoints:[]
			}
		},
		onLoad() {
			loc.updatePrivacyShow(true, true);
			loc.updatePrivacyAgree(true);
			
			//判断是否始终允许定位，false 引导用户去设置页面
			var always = loc.grantedAlwaysLocation();
			console.log("always:" + always);
			
			var nowTime = (new Date()).getTime();
			console.log(nowTime);
			
			//设置定位数据回调
			var that = this;
			/*loc.setLocationCallback(function(res){
				console.log(res);
			});//*/
			//添加监听定位数据回调
			globalEvent.addEventListener('onLocationEvent', function(e) {
				console.log(e);
			});
			
			//定位配置
			loc.setLocationOption({
				needAddress:true,//定位是否需要解析地址
				enableHTTPS:true,//(ios）
				allowsBackgroundLocationUpdates:true,//(ios）开启后台定位
				pausesLocationUpdatesAutomatically:false,//(ios）开启后台定位
				locationAccuracyMode:1,
				//distanceFilter:1,//(ios）设置定位最小更新距离方法如下，单位米。当两次定位距离满足设置的最小更新距离时，SDK会返回符合要求的定位结果。
				//locationTimeout:5,//单次定位超时时间（ios）
				//reGeocodeTimeout:10,//单次定位地址解析超时时间（ios）
				//onceLocation:true,//定位一次（android）
				//onceLocationLatest:true,（android）
				interval:5000//android设置定位间隔,单位毫秒,默认为2000ms，最低1000ms。（android）
				//httpTimeOut:30000//设置定位请求超时时间,单位是毫秒，默认30000毫秒，不要低于8000毫秒。（android）
				//mockEnable:true,//设置是否允许模拟位置,默认为true，允许模拟位置（android）
				//locationCacheEnable:false//设置是否开启定位缓存机制（android）
			});
		},
		onUnload() {
			//移除监听定位数据回调
			globalEvent.removeEventListener('onLocationEvent');
		},
		methods: {
			enableBackgroundLocation() {
				//android特有的接口
				//检查是否允许通知，oppo vivo等部分手机默认不允许通知
				if (loc.areNotificationsEnabled()) {
					//是否忽略电池优化，vivo部分手机需要忽略电池优化，保活才不被杀掉
					if (loc.isIgnoringBatteryOptimizations()) {
						loc.enableBackgroundLocation({
							contentTitle:"默认app名称",
							contentText:"正在后台运行"
						});
					} else {
						//请求忽略电池优化
						loc.requestIgnoreBatteryOptimizations();
					}
				} else {
					//打开设置通知
					loc.openSetting();
				}
			},
			disableBackgroundLocation() {
				//android特有的接口
				//停止后台保活定位服务
				var removeNotification = true;
				loc.disableBackgroundLocation(removeNotification);
			},
			startLocation() {
				//检查定位是否开启
				var ret = loc.isLocationRunning();
				if (ret == false) {
					//开始定位
					loc.startLocation();
				} else {
					uni.showToast({
						title:"已经开启定位"
					});
				}
			}, 
			stopLocation() {
				var ret = loc.isLocationRunning();
				if (ret == true) {
					//停止定位
					loc.stopLocation();
				}
			}
		}
	}
</script>

<style>

</style>
